package com.hualude.roadsign.service;

import com.hualude.roadsign.dto.DTRequestDto;
import com.hualude.roadsign.dto.DTResponseDto;
import com.hualude.roadsign.dto.MonitorDto;

import java.util.List;

/**
 * Created by xu_jiaHui on 2017/8/8.
 */
public interface MonitorService {

    /**
     * @Description: 监控箱信息DT展示
     * @author xu_jiaHui
     * @date 2017/8/8 15:46
     */
    public DTResponseDto getMonitor4DT(DTRequestDto dtRequestDto,
                                       String actorIds,
                                       Integer orgId,
                                       Boolean audit,
                                       String startRoad,
                                       String endRoad,
                                       String roadName,
                                       Integer alarmBinding) throws Exception;

    /**
     * @Description: 通过ID删除监控箱
     * @author xu_jiaHui
     * @date 2017/8/8 20:46
     */
    public Integer deleteMonitor(String monitorIds) throws Exception;

    /**
     * @Description: 添加监控箱信息
     * @author xu_jiaHui
     * @date 2017/8/8 20:48
     */
    public Integer addMonitor(MonitorDto monitorDto) throws Exception;

    /**
     * @Description: 更新监控箱信息
     * @author xu_jiaHui
     * @date 2017/8/9 12:31
     */
    public Integer updateMonitor(MonitorDto monitorDto) throws Exception;

    /**
     * @Description: 根据路名获取起始路段
     * @author xu_jiaHui
     * @date 2017/8/9 13:12
     */
    public List<String> getStartRoadByRoadName(String roadName, String actorIds, Integer orgId) throws Exception;

    /**
     * @Description: 根据所在城市, 路名, 起始路名获取结束路名
     * @author xu_jiaHui
     * @date 2017/8/9 13:27
     */
    public List<String> getEndRoadByStartRoad(String city, String monitorRoadName, String startRoad, String actorIds, Integer orgId) throws Exception;

    /**
     * @Description: 获取监控箱信息用于列表展示4App
     * @author xu_jiaHui
     * @date 2017/8/9 14:06
     */
    public List<MonitorDto> getMonitor4APP(String actorIds,
                                           Integer orgId,
                                           Integer mCount,
                                           Integer mSize,
                                           String city,
                                           String startRoad,
                                           String endRoad,
                                           String roadName,
                                           String alarmType) throws Exception;

    /**
     * @Description: 通过id获取信号箱信息
     * @Author: xu_jiaHui
     * @Date: 2017/8/10 16:28
     */
    public MonitorDto getMonitorById(Integer monitorId) throws Exception;

    /**
     * @Description: 获取信号机城市列表4App
     * @Author: xu_jiaHui
     * @Date: 2017/8/10 16:44
     */
    public List<String> getCity4Monitor4App(String actorIds, Integer orgId, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 根据City获取路名列表
     * @Author: xu_jiaHui
     * @Date: 2017/8/10 16:51
     */
    public List<String> getRoadName4MonitorByCity(String actorIds, Integer orgId, String city, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 根据 城市 路名 起始路名 获取结束路名
     * @Author: xu_jiaHui
     * @Date: 2017/8/11 19:59
     */
    public List<String> getEndRoadByStartRoad4App(String city, String monitorRoadName, String startRoad, String actorIds, Integer orgId, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 根据 城市 路名 获取起始路名
     * @Author: xu_jiaHui
     * @Date: 2017/8/11 20:49
     */
    public List<String> getStartRoadByRoadName4App(String city, String roadName, String actorIds, Integer orgId, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 获取监控箱信息用于App端地图展示
     * @Author: xu_jiaHui
     * @Date: 2017/8/11 22:35
     */
    public List<MonitorDto> getMonitor4Map4App(Integer orgId,
                                               String actorIds,
                                               double neLongitude,
                                               double neLatitude,
                                               double swLongitude,
                                               double swLatitude) throws Exception;

    /**
     * @Description: 审核监控箱信息
     * @Author: xu_jiaHui
     * @Date: 2017/8/12 18:34
     */
    public Integer auditMonitor(String monitorIds) throws Exception;

    /**
     * @Description: 绑定报警器
     * @author WYX
     * @date 2018/4/29
     */
    public Integer bindingDevice(String deviceId, Integer monitorId) throws Exception;

    /**
     * @Description: 解绑设备
     * @author WYX
     * @date 2018/4/29
     */
    public Integer unbindingDevice(String deviceId, Integer monitorId)throws Exception;

    /**
     * @Description: 获取故障通知列表
     * @author WYX
     * @date 2018/4/29
     */
    public DTResponseDto showAlarmHistory(DTRequestDto dtRequestDto, String deviceId, Integer deviceType)throws Exception;

    public List<MonitorDto> getDeviceInfo(Integer deviceId) throws Exception;


}
